package api

import (
	"gitee.com/linxing_3/sr-core/domain/api"
	"gitee.com/mkwchecking/sr-admin/apps/devtools/acl"
	"gitee.com/mkwchecking/sr-admin/apps/devtools/service"
	"github.com/gin-gonic/gin"
)

func NewClassGen(g *service.ClassGen) *ClassGen {
	return &ClassGen{
		srv: g,
	}
}

type ClassGen struct {
	srv *service.ClassGen
}

// ClassGenerate
// @Summary		生成代码
// @Tags		devtools
// @Accept		json
// @Produce	json
// @Param		module	path		string	true	"模块名称"
// @Success	200		{object}	relay.Response{data=entity.Module}
// @Router		/api/v1/devtools/gen/{module} [get]
func (g *ClassGen) ClassGenerate(c *gin.Context) {
	req := &acl.ClassGenReq{}
	apiCtx := api.
		NewCtx(c).
		WithReq(req)
	if !apiCtx.Do() {
		return
	}

	err := g.srv.ClassGen(apiCtx.Context(), req)
	if err != nil {
		apiCtx.WriteErr(nil, err, err.Error())
	} else {
		apiCtx.WriteOK(nil, "ok")
	}
}

// Domain check
// @Summary		检查域是否存在
// @Tags		devtools
// @Accept		json
// @Produce	json
// @Param		domain	path		string	true	"域名称"
// @Success	200		{object}	relay.Response{data=entity.Module}
// @Router		/api/v1/devtools/gen/checkDomain [get]
func (g *ClassGen) CheckDomain(c *gin.Context) {
	req := &acl.DomainCheckReq{}
	apiCtx := api.
		NewCtx(c).
		WithReq(req)
	if !apiCtx.Do() {
		return
	}
	err := g.srv.DomainCheck(apiCtx.Context(), req)
	if err != nil {
		apiCtx.WriteErr(nil, err, err.Error())
	} else {
		apiCtx.WriteOK(nil, "ok")
	}
}
